<h2>DESCRIPTION</h2>

<em>v.build.polylines</em> builds polylines from the lines or
boundaries in a vector map.

<p>A line is defined by one start node, one end node and any number of
vertices between the start and end nodes. The shortest possible line
consists of only two vertices where the coordinates of the start and end
nodes are identical to those of the two vertices.

<p><em>v.build.polylines</em> picks a line and from its start node, walks
back as long as exactly one other line of the same type is connected to
this node. Line directions are reversed as required, i.e. it does not
matter if the next line is connected to the current node by its start or
end node. Once the start line of a polyline is identified, it walks
forward and adds all vertices (in reverse order if needed) of
connected lines to the start line, i.e. the start line and connecting
lines are reversed as needed. That is, if a line is reversed depends
on what node is initially picked for building polylines. If the
direction of lines is important (it's not for boundaries to build
areas), you have to manually change line directions with
either <em><a href="v.edit.html">v.edit</a></em> or
the <em><a href="wxGUI.vdigit.html">wxGUI vector
digitizer</a></em>.

<p>Polylines provide the most appropriate representation of curved lines when
it is important that nodes serve to define topology rather than geometry.
Curved lines are usually digitized as polylines, but these are sometimes broken
into their constituent straight line segments during conversion from one data
format to another. <em>v.build.polylines</em> can be used to rebuild such
broken polylines. 

<h2>NOTES</h2>

<em>v.build.polylines</em> combines only lines of the same type to
a new polyline, i.e. lines and boundaries are kept separate.

<p>Category number(s) are assigned to a polyline based on <b>cats</b> parameter.

<ul>
  <li><b>cats=no</b> - No category number is assigned to a
  polyline. Also attributes tables linked to the input vector map are
  not copied to the output vector map.</li>
  <li><b>cats=first</b> - Assign to a polyline category number of the
  first line. All linked attributes tables are copied to the output
  vector map without filtering, but the categories are processed according 
  to the cats option.</li>
  <li><b>cats=multi</b> - If the lines that make up a polyline have
  different category numbers then <em>v.build.polylines</em> will
  set the multiple category numbers to a polyline.  Also all linked
  attributes tables are copied to the output vector map.</li>
  <li><b>cats=same</b> - Assigned lines to a polyline have
  same category numbers in all layers. Linked
  attributes tables are copied to the output vector map.</li>
</ul>

<em>v.build.polylines</em> correctly handles <b>input</b> vector maps
containing lines, boundaries, centroids and points. Lines and
boundaries will be converted to polylines.  Areas
are guaranteed to be preserved.

<!-- Points will remain points provided that <b>type</b> has been set
to `source'.  It is possible to convert lines and area edges to points
or vice versa, but this is rarely useful.  [type no longer exists,
other behaviour still true??] -->

<h2>ACKNOWLEDGEMENTS</h2>

This program was originally written during Mark Lake's tenure of a 
Leverhulme Special Research Fellowship at University College London. 

<h2>SEE ALSO</h2> 

<em>
<a href="v.build.html">v.build</a>,
<a href="v.in.ascii.html">v.in.ascii</a>,
<a href="v.edit.html">v.edit</a>,
<a href="v.split.html">v.split</a>
</em>

<h2>AUTHORS</h2>
Mark Lake, Institute of Archaeology, University College London.<br> 
Major rewrite by Radim Blazek, October 2002<br>
Category mode added by Martin Landa, FBK-irst, Trento, Italy, October 2007<br>
Support for categories, attributes, and different line types by Markus Metz

<!--
<p>
<i>Last changed: $Date$</i>
-->
